-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

=============================================================================
FreeBSD-SA-06:12.opie                                       Security Advisory
                                                          The FreeBSD Project

Topic:          OPIE arbitrary password change

Category:       contrib
Module:         contrib_opie
Announced:      2006-03-22
Credits:        Mykola Zubach
Affects:        All FreeBSD releases.
Corrected:      2006-03-22 16:01:08 UTC (RELENG_6, 6.1-STABLE)
                2006-03-22 16:01:38 UTC (RELENG_6_0, 6.0-RELEASE-p6)
                2006-03-22 16:01:56 UTC (RELENG_5, 5.5-STABLE)
                2006-03-22 16:02:17 UTC (RELENG_5_4, 5.4-RELEASE-p13)
                2006-03-22 16:02:35 UTC (RELENG_5_3, 5.3-RELEASE-p28)
                2006-03-22 16:02:49 UTC (RELENG_4, 4.11-STABLE)
                2006-03-22 16:03:05 UTC (RELENG_4_11, 4.11-RELEASE-p16)
                2006-03-22 16:03:25 UTC (RELENG_4_10, 4.10-RELEASE-p22)
CVE Name:       CVE-2006-1283

For general information regarding FreeBSD Security Advisories,
including descriptions of the fields above, security branches, and the
following sections, please visit
<URL:http://www.freebsd.org/security/>.

I.   Background

OPIE is a one-time password system designed to help to secure a system
against replay attacks.  It does so using a secure hash function and a
challenge/response system.  The opiepasswd(1) program is used to set
up OPIE authentication for a user.  OPIE is enabled by default on
FreeBSD through PAM.

II.  Problem Description

The opiepasswd(1) program uses getlogin(2) to identify the user
calling opiepasswd(1).  In some circumstances getlogin(2) will return
"root" even when running as an unprivileged user.  This causes
opiepasswd(1) to allow an unpriviled user to configure OPIE
authentication for the root user.

III. Impact

In certain cases an attacker able to run commands as a non privileged
users which have not explicitly logged in, for example CGI scripts run
by a web server, is able to configure OPIE access for the root user.
If the attacker is able to authenticate as root using OPIE
authentication, for example if "PermitRootLogin" is set to "yes" in
sshd_config or the attacker has access to a local user in the "wheel"
group, the attacker can gain root privileges.

IV.  Workaround

Disable OPIE authentication in PAM:

# sed -i "" -e /opie/s/^/#/ /etc/pam.d/*

or

Remove the setuid bit from opiepasswd:

# chflags noschg /usr/bin/opiepasswd
# chmod 555 /usr/bin/opiepasswd
# chflags schg /usr/bin/opiepasswd

V.   Solution

Perform one of the following:

1) Upgrade your vulnerable system to 4-STABLE, 5-STABLE, or 6-STABLE,
or to the RELENG_6_0, RELENG_5_4, RELENG_5_3, RELENG_4_11, or
RELENG_4_10 security branch dated after the correction date.

2) To patch your present system:

The following patches have been verified to apply to FreeBSD 4.10,
4.11, 5.3, 5.4, and 6.0 systems.

a) Download the relevant patch from the location below, and verify the
detached PGP signature using your PGP utility.

# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-06:12/opie.patch
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-06:12/opie.patch.asc

b) Execute the following commands as root:

# cd /usr/src
# patch < /path/to/patch
# cd /usr/src/usr.bin/opiepasswd
# make obj && make depend && make && make install

VI.  Correction details

The following list contains the revision numbers of each file that was
corrected in FreeBSD.

Branch                                                           Revision
  Path
- -------------------------------------------------------------------------
RELENG_4
  src/contrib/opie/opiepasswd.c                               1.1.1.2.6.4
RELENG_4_11
  src/UPDATING                                             1.73.2.91.2.17
  src/sys/conf/newvers.sh                                  1.44.2.39.2.20
  src/contrib/opie/opiepasswd.c                          1.1.1.2.6.3.10.1
RELENG_4_10
  src/UPDATING                                             1.73.2.90.2.23
  src/sys/conf/newvers.sh                                  1.33.2.34.2.24
  src/contrib/opie/opiepasswd.c                           1.1.1.2.6.3.8.1
RELENG_5
  src/contrib/opie/opiepasswd.c                                   1.3.8.1
RELENG_5_4
  src/UPDATING                                            1.342.2.24.2.22
  src/sys/conf/newvers.sh                                  1.62.2.18.2.18
  src/contrib/opie/opiepasswd.c                                  1.3.12.1
RELENG_5_3
  src/UPDATING                                            1.342.2.13.2.31
  src/sys/conf/newvers.sh                                  1.62.2.15.2.33
  src/contrib/opie/opiepasswd.c                                  1.3.10.1
RELENG_6
  src/contrib/opie/opiepasswd.c                                  1.3.14.1
RELENG_6_0
  src/UPDATING                                             1.416.2.3.2.11
  src/sys/conf/newvers.sh                                    1.69.2.8.2.7
  src/contrib/opie/opiepasswd.c                                  1.3.16.1
- -------------------------------------------------------------------------

VII. References

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-1283

The latest revision of this advisory is available at
ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-06:12.opie.asc
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.2 (FreeBSD)

iD8DBQFEIXZNFdaIBMps37IRAoChAJ9ZFa+7jKF11vpUOKxmh8FqcG3EXgCfYOqj
/M5ncIaa4gs6P9wihbZ1vZc=
=fccv
-----END PGP SIGNATURE-----
